package com.pxmeta.chat.entity.vo;

import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;

@Data
public class MsgVO implements Serializable {

    @NotBlank
    @JsonProperty("target_type")
    @ApiModelProperty("发送的目标类型：users：给用户发消息，chatgroups：给群发消息，chatrooms：给聊天室发消息。")
    private String targetType;

    @NotEmpty
    @ApiModelProperty("发送的目标；注意这里需要用数组，数组内添加的最大用户数默认 600 个，即使只有一个用户，也要用数组 [‘u1’]；给用户发送时数组元素是用户名，给群组发送时，数组元素是 groupid。")
    private List<String> target;

    @NotNull
    @ApiModelProperty("具体消息内容参数集，参考以下不同类型消息。")
    private JSONObject msg;

    @ApiModelProperty("表示消息发送者；无此字段 Server 会默认设置为 “from”:“admin”，有 from 字段但值为空串 (“”) 时请求失败。")
    private String from;

    @ApiModelProperty("消息发送成功后，是否将消息同步给发送方。默认false")
    @JsonProperty("sync_device")
    private Boolean syncDevice;

    @ApiModelProperty("该参数值为“ROUTE_ONLINE”， 表示发送消息时只有接收方在线时，才进行消息投递。若接收方离线，将不会收到此条消息。\n")
    @JsonProperty("routetype")
    private String routeType;
}
